package com.qdu.spring.blog.controller.redisTest;

import com.qdu.spring.blog.bean.test1.User1;
import com.qdu.spring.blog.bean.test2.User2;
import com.qdu.spring.blog.util.AjaxResult;
import com.qdu.spring.blog.util.JsonUtils;
import com.qdu.spring.blog.util.RedisOperator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/redis")
public class RedisController {
    @Autowired
    private StringRedisTemplate redisTemplate;

    @Autowired
    private RedisOperator redisOperator;

    //测试基本redis用法
    @RequestMapping("/testByTemplate")
    public AjaxResult test1(){
//        自定义一个list
        List<String> list =new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("v");
//        调用redisTemplate的set方法，因为set方法存储的是json格式，所以需要把list转成json格式。
//        自定义的JsonUtils可以帮我们完成转化过程
        redisTemplate.opsForValue().set("list",JsonUtils.toJson(list));
//        将redis数据库结果取出，以json形式显示到页面
        return AjaxResult.successInstance(redisTemplate.opsForValue().get("list"));
    }

//    把Redis一些方法封装到了RedisOperator工具类中，简单测试redis用法
    @RequestMapping("/testByOperator")
    private AjaxResult test2(){
//        定义一个一个User1类型
        User1 user1 = new User1();
        user1.setId(1);
        user1.setName("张三");
        user1.setAge(20);
//        定义一个一个User2类型
        User2 user2 = new User2();
        user2.setId(1);
        user2.setName("李四");
        user2.setAge(21);
//        将两个User放入到list中
        List<Object> list = new ArrayList<>();
        list.add(user1);
        list.add(user2);
//        以json形式将list中的两个user对象存储到redis数据库中
        redisOperator.set("json:info:userlist" , JsonUtils.toJson(list), 20);
//        将redis数据库结果取出，以json形式显示到页面
        return AjaxResult.successInstance(redisOperator.get("json:info:userlist"));
    }
}
